<?php

class Somi_Auth_AccessControl extends Zend_Controller_Plugin_Abstract {

	private $auth;
    private $acl;
    
    
    public function __construct(Zend_Auth $auth, Zend_Acl $acl)
    {
        $this->auth = $auth;
        $this->acl = $acl;
        
    }
    
    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {
        $controller = $request->getControllerName();
        $action = $request->getActionName();
        # wenn Benutzer indetifiziert dann holt sich die Rolle 
        if ($this->auth->hasIdentity()) {
            $role = $this->auth->getIdentity()->role;
        }
        # amsonsten wird die Rolle als Visitor
        else {
            $role = 'Visitor';
        }
        
        if (!$this->acl->has($controller)) {
            $controller = null;
        }
        # wenn der Benutzer keine Erlaubnis hat wird es auf Denied seite weiter geleitet
        if (!$this->acl->isAllowed($role, $controller, $action)) {
            $request->setControllerName('index');
            $request->setActionName('denied');
        }
    }
}
?>